#pragma once
#ifndef __MATERIAL__TEMPLATE_GENERATOR__HH__
#define __MATERIAL__TEMPLATE_GENERATOR__HH__

#include <Ogre.h>
#include <LitExceptions.h>
#include <LitFileSystem.h>
#include "MaterialCreateShaderDialog.h"

namespace Lit
{
	namespace Editor
	{
		namespace Material
		{
			class TemplateGenerator
			{
			protected:
				std::string mAuthor;
				FilePath	mPath;
			public:
				TemplateGenerator( const std::string &filename_with_ext, const std::string &author = "unknown" );
				~TemplateGenerator();

				const std::string& getAuthor() const;
				std::string getType() const;
				std::string getName() const;
				std::string getFileName() const;
				std::string generateMaterial( const std::string &base_texture = "rockwall.tga" );
				std::string generateProgram( ProgramDef def );
				std::string generateCompositor( );
				std::string generateParticle( );
				std::string generateVertexShader( const std::string &lang, const std::string &entry_point );
				std::string generatePixelShader( const std::string &lang, const std::string &entry_point );
			};
		};
	};
};

#endif